package moj_pakiet;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class Lokata {
	String nrLokaty;
	String nrKonta;
	double stanLokaty;
	double rata;
	int kapitalizacjaWMiesiacach;
	String odKiedy;
	String doKiedy;
	
	public String toString(){
		return "nr lokaty: "+nrLokaty+"\nnr konta: "+nrKonta+"\nstanLokaty: "+stanLokaty+
				"\nrata: "+rata+"\nkapitalizacja co "+kapitalizacjaWMiesiacach+" miesiecy\n"+
				"od: "+odKiedy+"\ndo: "+doKiedy+"\n";
	}
	
	public Lokata(){
		
	}
	
	public Lokata(String nrKonta,
			double stanLokaty,
			double rata,
			int kapitalizacjaWMiesiacach,
			String odKiedy,
			String doKiedy){
		
		this.nrKonta=nrKonta;
		this.stanLokaty=stanLokaty;
		this.rata=rata;
		this.kapitalizacjaWMiesiacach=kapitalizacjaWMiesiacach;
		this.odKiedy=odKiedy;
		this.doKiedy=doKiedy;
	}
	
	public  boolean lokataDodajDoBazy() throws SQLException{
		String nazwabazy="baza.db";
		Connection polaczenie=null;
		 java.sql.Statement statement = null;
		try {
	         Context ctx = new InitialContext();
	         DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/baza");
	         polaczenie = ds.getConnection();
	         statement = polaczenie.createStatement();
	        
	   } catch (SQLException se) {
	      // se.toString());
	   } catch (NamingException ne) {
	      //   LOG.info(ne.toString());
	   }
		
		statement.executeUpdate("INSERT INTO lokaty VALUES " +
							"('"+this.nrKonta+"','"+this.stanLokaty+"','"+ this.rata+ "','" +
							this.kapitalizacjaWMiesiacach + "','" + this.odKiedy + "','" + 
							this.doKiedy + "' );");
		
		polaczenie.close();
		return true;
		
		
	}
	
	
	public boolean lokataUsunZBazy(String nrLokaty) throws SQLException{

		String nazwabazy="baza.db";
		Connection polaczenie=null;
		 java.sql.Statement statement = null;
		try {
	         Context ctx = new InitialContext();
	         DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/baza");
	         polaczenie = ds.getConnection();
	         statement = polaczenie.createStatement();
	        
	   } catch (SQLException se) {
	      // se.toString());
	   } catch (NamingException ne) {
	      //   LOG.info(ne.toString());
	   }
		statement.executeUpdate("DELETE FROM lokaty where nrLokaty='"+nrLokaty+"'");

		polaczenie.close();
		return true;
		
	}
	
	public boolean pobierzDaneLokatyPoNr(String nrLokaty) throws SQLException{	
		String nazwabazy="baza.db";
		Connection polaczenie=null;
		 java.sql.Statement statement = null;
		try {
	         Context ctx = new InitialContext();
	         DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/baza");
	         polaczenie = ds.getConnection();
	         statement = polaczenie.createStatement();
	        
	   } catch (SQLException se) {
	      // se.toString());
	   } catch (NamingException ne) {
	      //   LOG.info(ne.toString());
	   }
		 try {
			statement.setQueryTimeout(30);
		} catch (SQLException e) {

			e.printStackTrace();
			return false;
		}
		     
		ResultSet wynik = null;
		try {
			wynik = statement.executeQuery("select * from lokaty where nrLokaty='"+nrLokaty+"'");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
		this.nrKonta=wynik.getString("nrKonta");
		this.nrLokaty=wynik.getString("nrLokaty");
		this.stanLokaty=wynik.getDouble("stanLokaty");
		this.rata=wynik.getDouble("rata");
		this.kapitalizacjaWMiesiacach=wynik.getInt("kapitalizacja_w_miesiacach");
		this.odKiedy=wynik.getString("od_kiedy");
		this.doKiedy=wynik.getString("do_kiedy");
		
		polaczenie.close();
		return true;
		}
}
